第十八讲 R-多元方差分析
在“R与生物统计专题”中,我们会从介绍R的基本知识展开到生物统计原理及其在R中的实现。以从浅入深,层层递进的形式在投必得医学公众号更新。
在存在多个响应变量的情况下,您可以使用多元方差分析同时检测多个响应变量。
例如, 对两组小鼠进行两种治疗(A和B),并且我们对小鼠的体重和身高感兴趣。在那种情况下,小鼠的体重和身高是两个响应变量,我们的假设是两者都受到治疗差异的影响。
多元方差分析是在单因素方差分析的基础上,同时还有其他因素,比如除了治疗外,还有体重和身高。
多元方差分析可以在某些条件下使用:
响应变量通常应在组内分布。R函数mshapiro.test()[在mvnormtest软件包中]可用于执行Shapiro-Wilk测试以检验多元正态性。这对于假设多元正态性的多元方差分析很有用。
预测变量范围内方差的同质性。
每个像元中所有响应变量对,所有协变量对以及所有响应变量-协变量对之间的线性
如果全局多元检验显着,我们得出结论,相应的效果(治疗)显着。在那种情况下,下一个问题是确定治疗是否只影响体重,只影响身高或两者都影响。换句话说,我们要确定导致显着全局效应的特定响应变量。
为了回答这个问题,我们可以使用单向方差分析(或单变量方差分析)来分别检查每个响应变量。
与所有方差分析检验一样,多元方差分析假设每个单元内的观测值呈正态分布并且满足方差齐性。这一部分请参看往期推送请参看第十五讲 R-单因素方差分析2
4.1 导入数据
在这里,我们将使用名为iris的内置R数据集。它包含了花萼的长度和宽度以及花瓣的长度和宽度,以及物种。数据示例如下所示。
# 导入R内自带的iris数据集
library(datasets)
data(iris)# 将数据存储在变量my_data中
my_data <- iris
4.2 检查你的数据
# 显示前六行
head(my_data)
输出结果
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
# 显示数据的结构
str(my_data)
输出结果
'data.frame': 150 obs. of 5 variables:
$ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
$ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
$ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
$ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
$ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
研究问题:不同物种间,花萼和花瓣的长度又无差异。
4.3多元方差分析R实现
函数manova ()可以如下使用:
# 多元方差分析
res.man <- manova(cbind(Sepal.Length, Petal.Length) ~ Species, data = iris)
# 查看总体多元方差分析的结果
summary(res.man)
输出结果
Df Pillai approx F num Df den Df Pr(>F)
Species 2 0.9885 71.829 4 294 < 2.2e-16 ***
Residuals 147
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
其中cbind表示将Sepal.Length与Petal.Length两个因素整合在一起输入manova()函数的因素中。
从上面的输出中可以看出,P值 < 2.2e-16,说明Sepal.Length与Petal.Length两个因素在物种间有很大的差异。但是通过以上结果,我们无法知道具体是哪个因素或者这两个因素都在物种间表现出差异。于是需要查看具体每个因素的结果。
# 查看具体每个因素的结果
summary.aov(res.man)
输出结果
Response Sepal.Length :
Df Sum Sq Mean Sq F value Pr(>F)
Species 2 63.212 31.606 119.26 < 2.2e-16 ***
Residuals 147 38.956 0.265
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Response Petal.Length :
Df Sum Sq Mean Sq F value Pr(>F)
Species 2 437.10 218.551 1180.2 < 2.2e-16 ***
Residuals 147 27.22 0.185Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
从上面的输出中可以看出,两个因素在物种之间有很大的不同(两个因素的对应方差分析P值 < 2.2e-16)。
4.4方差分析与回归分析的联系与区别
方差分析
方差分析是检验若干个均值相等的比较好的方法,我们在最近的几讲中为大家详细讲解了单因素方差分析(一个研究因素被分成了多个组,详见第十四讲 R-单因素方差分析1),双向方差分析(研究对象先被分到多个区组,再对各个区组中样本进行不同因素间差异的研究第十六讲 R-双向方差分析1)以及多元方差分析(多个研究因素同时被考虑)。
方差分析常常对应因子(因素)是离散的(比如被分为几个组),响应变量为连续性数据(比如花萼的长度)分析,而回归则是因子(因素)和响应变量都是连续性数据,这尤其在线性回归中得到了充分的体现。广为流传的一种说法是,方差分析可以看作是线性回归的特例。
这种拟合数据方程的一般方法称为回归分析。我们主要是拟合线性回归模型。当响应变量是二分类数据时,往往通过对等式两边进行取自然对数,从而使响应变量成为连续性数据,被称为逻辑回归。
假如我们现在做一个实验,建立身高和体重与血糖之间的经验模型。我们可以用方程
y=β0+β1X1+β2X2+ε来描述,y表示血糖,X1表示身高,X2表示体重。这个类型的模型称为多元线性回归模型。
好了,本期讲解就先到这里。小伙伴们赶紧试起来吧。
当然啦,R语言的掌握是在长期训练中慢慢积累的。一个人学习太累,不妨加入“R与统计交流群”,和数百位硕博一起学习。
快扫二维码撩客服,
带你进入投必得医学交流群,
让我们共同进步!
↓↓
- END -
长按二维码关注「投必得医学」,更多科研干货在等你!